//
//  MainTabBar.swift
//  新浪微博项目
//
//  Created by 王炯 on 16/7/19.
//  Copyright © 2016年 王炯. All rights reserved.
//

import UIKit

//UITabBar属于UIView的子类，是UITabBarController上的可视化控件(类似于UIView相对于UIViewController）
class MainTabBar: UITabBar
{
    
    weak var AddDelegate:SHTabBarDelegate?
    
    //懒加载添加按钮
    private lazy var addWordButton:UIButton =
        {
        
        let button = UIButton()
            
        //点击按钮之后的触发事件(通过代理方法让tabBarController去做某些事)
        button.addTarget(self, action: #selector(MainTabBar.AddClick), forControlEvents: UIControlEvents.TouchUpInside)
        
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        button.sizeToFit()
        
        
        return button
    }()
    
    //添加按钮的触发事件
    func AddClick()
    {
        //通过代理让控制器去做
        AddDelegate?.addButtonClick()
    }
    

    //设置TabBar上面的控件的入口
    override init(frame: CGRect)
    {
        super.init(frame: frame)
        
        //设置tabBar上面的子控件
        setUpUI()
        
    }
    
    required init?(coder aDecoder: NSCoder)
    {
        fatalError("init(coder:) has not been implemented")
    }
    

    //设置上面的子控件
    func setUpUI()
    {
        addSubview(self.addWordButton)
        
        //或者用以下的方法(设置约束)
        /*
        self.addWordButton.snp_makeConstraints { (make) in
            make.center.equalTo(self)
        }
        */
    }
    
    override func layoutSubviews()
    {
     
       super.layoutSubviews()
        
        
        //在此重新布局tabBar上面的tabBar Button，用于给添加按钮一个空间
        //思路:遍历tabBar上面的所有子控件，当遇到控件是tabBar Button类型时，重新设置布局
        //必须采用这种方法才能获取UITabBarButton对应的类
        
        let v = NSClassFromString("UITabBarButton")
        
        // 计算UITabBarButton 宽度
        let w = frame.width * 0.2
        
        var index:CGFloat = 0
        
        for view in self.subviews
        {
            if view.isKindOfClass(v!)
            {
                // 设置UITabBarButton frame
                view.frame.origin.x = index * w
                view.frame.size.width = w
                
                index++
                
                //给添加按钮留位置
                if index == 2
                {
                    index++
                }
                
            }
        }
        
        self.addWordButton.center.x = frame.width * 0.5
        self.addWordButton.center.y = frame.height * 0.5
    }
    
}
